library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(readr)
library(tidyverse)
## -- Attaching packages --------------------------------------- tidyverse 1.3.1 --
## v ggplot2 3.3.5     v purrr   0.3.4
## v tibble  3.1.2     v stringr 1.4.0
## v tidyr   1.1.3     v forcats 0.5.1
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()
library(ggplot2)
library(ggthemes)
library(glue)
## 
## Attaching package: 'glue'
## The following object is masked from 'package:dplyr':
## 
##     collapse
library(scales)
## 
## Attaching package: 'scales'
## The following object is masked from 'package:purrr':
## 
##     discard
## The following object is masked from 'package:readr':
## 
##     col_factor
library(forcats)
format_numb <- scales::label_comma(accuracy = .2, big.mark = ".", decimal.mark = ",")
usedCars = read.csv("dataset231/cars_train_new.csv")
head(usedCars)

Karena kita tertarik dengan mengetahui usia kendaraan, maka kita tambahkan dulu satu kolom yang mencatat usia kendaraan dengan patokan tahun 2020 saat data diatas dpersiapkan. Selain itu kita juga mencoba mengkategorikan usia pemakaian yang dikatakan muda, sedang dan tua. Usia kendaraan kurang atau sama dengan 2 tahun disebut muda, usia kendaraan antara 2 dan 10 tahun dikatakan sedang, dan usia kendaraan di atas 10 tahun disebut sebagai usia tua.

usedCars = 
   usedCars %>% mutate(age = as.integer(2020 - year))
usedCars =
   usedCars %>% mutate(age_Cat = if_else(age <= 2, "Low", if_else(age > 2 & age <=10, "Medium", "High")))  

head(usedCars)

Untuk mengetahui usia kendaraan yang lebih atau sama dengan 5 tahun

usedCars %>% filter(age >= 5)

Untuk mengetahui merek kendaraan yang unik

uniqueBr <- unique(usedCars$brand)
length(uniqueBr)
## [1] 59
sort(uniqueBr, decreasing = F)
##  [1] "Abarth"          "Aston Martin"    "Audi"            "Bentley"        
##  [5] "BMW"             "Cadillac"        "Chery"           "Chevrolet"      
##  [9] "Chrysler"        "Daewoo"          "Daihatsu"        "Datsun"         
## [13] "DFSK"            "Dodge"           "Elf"             "Ferrari"        
## [17] "Fiat"            "Ford"            "Geely"           "Hino"           
## [21] "Holden"          "Honda"           "Hummer"          "Hyundai"        
## [25] "Infiniti"        "Isuzu"           "Jaguar"          "Jeep"           
## [29] "KIA"             "Lamborghini"     "Land Rover"      "Lexus"          
## [33] "Maserati"        "Mazda"           "McLaren"         "Mercedes-Benz"  
## [37] "MINI"            "Mitsubishi"      "Mitsubishi Colt" "Nissan"         
## [41] "Opel"            "Peugeot"         "Porsche"         "Proton"         
## [45] "Renault"         "Reo"             "Rolls-Royce"     "Rover"          
## [49] "smart"           "Subaru"          "Suzuki"          "Tata"           
## [53] "Tesla"           "Timor"           "Toyota"          "UD TRUCKS"      
## [57] "Volkswagen"      "Volvo"           "Wuling"

Jadi ada 59 merk kendaraan yang unik. Namun karena ada kemunculan beberapa merek yang tidak tepat, kita perbaiki beberapa value pada kolom brand, yaitu merek “Elf” dan merek “Mitsubishi Colt” dimana sebenarnya “Elf” dan “Colt” adalah model dari merek “Isuzu” dan “Mitsubishi”.

usedCars["brand"][usedCars["brand"] == "Elf"] <- "Isuzu"
usedCars["brand"][usedCars["brand"] == "Mitsubishi Colt"] <- "Mitsubishi"
uniqueBr <- unique(usedCars$brand)
length(uniqueBr)
## [1] 57
sort(uniqueBr, decreasing = F)
##  [1] "Abarth"        "Aston Martin"  "Audi"          "Bentley"      
##  [5] "BMW"           "Cadillac"      "Chery"         "Chevrolet"    
##  [9] "Chrysler"      "Daewoo"        "Daihatsu"      "Datsun"       
## [13] "DFSK"          "Dodge"         "Ferrari"       "Fiat"         
## [17] "Ford"          "Geely"         "Hino"          "Holden"       
## [21] "Honda"         "Hummer"        "Hyundai"       "Infiniti"     
## [25] "Isuzu"         "Jaguar"        "Jeep"          "KIA"          
## [29] "Lamborghini"   "Land Rover"    "Lexus"         "Maserati"     
## [33] "Mazda"         "McLaren"       "Mercedes-Benz" "MINI"         
## [37] "Mitsubishi"    "Nissan"        "Opel"          "Peugeot"      
## [41] "Porsche"       "Proton"        "Renault"       "Reo"          
## [45] "Rolls-Royce"   "Rover"         "smart"         "Subaru"       
## [49] "Suzuki"        "Tata"          "Tesla"         "Timor"        
## [53] "Toyota"        "UD TRUCKS"     "Volkswagen"    "Volvo"        
## [57] "Wuling"

Setelah koreksi, kini ada 57 merek kendaraan yang unik. Ke-57 merek kendaraan tersebut akan diklasifikasikan menurut dua kelompok. Kelompok pertama adalah kelompok merek-merek kendaraan yang berasal dari negara-negara di Eropa dan kelompok kedua adalah merek kendaraan yang khusus dari negara Jepang saja.

usedCars_grBr = usedCars %>% 
   group_by(brand) %>% 
   arrange(brand)
head(usedCars_grBr)
tail(usedCars_grBr)

Dengan demikian kelompok kendaraan yang diproduksi di Eropa dan di Jepang dapat disusun sebagai berikut:

euroCars = c("Abart", "Aston Martin", "Audi", "Bentley", "BMW", "Ferrari", "Fiat", "Jaguar", "Lamborghini", "Land Rover", "Maserati", "McLaren", "Mercedes-Benz", "MINI", "Opel", "Peugeot", "Porsche", "Renault", "Reo", "Rolls-Royce", "Rover", "smart", "Volkswagen", "Volvo")
length(euroCars)
## [1] 24
japaneseCars = c("Daihatsu", "Datsun", "Elf", "Hino", "Honda", "Infiniti", "Isuzu", "Lexus", "Mazda", "Mitsubishi", "Mitsubishi Colt", "Nissan", "Subaru", "Suzuki", "Toyota", "UD TRUCKS")
length(japaneseCars)
## [1] 16

di mana ada 24 merek kendaraan beberapa negara di Eropa dan ada 16 merek kendaraan buatan Jepang

Berikutnya kita akan persempit kendaraan-kendaraan buatan negara-negara di Eropa dan Jepang saja

usedCars_EuroJapan = usedCars_grBr %>% 
   filter(brand %in% euroCars | brand %in% japaneseCars)
head(usedCars_EuroJapan)
tail(usedCars_EuroJapan)
nrow(usedCars_EuroJapan)
## [1] 76478

Bila kita ingin mengetahui usia kendaraan yang sudah lebih atau sama dengan 5 tahun (berarti sebagian masuk kategori medium dan high) maka dengan menyaring data kita akan memperoleh hasil berikut

usedCars_EuroJapan_over5 = 
   usedCars_EuroJapan %>% filter(age >= 5)
head(usedCars_EuroJapan_over5)
nrow(usedCars_EuroJapan_over5)
## [1] 50818
usedCars_under2 = 
   usedCars %>% filter(age < 2)
head(usedCars_under2)
nrow(usedCars_under2)
## [1] 1302

File ini berisi template untuk mejawab pertanyaan 5W+1H saat briefing Capstone Data Visualization sebagai langkah awal sebelum membuat Dashboard. Silakan Bapak/Ibu mengisi jawaban di bawah.

File ini tidak akan dinilai namun Bapak/Ibu WAJIB disubmit ke dalam classroom pada hari H briefing Capstone Data Visualization.

What

Tentukan tujuan atau informasi yang ingin ditampilkan dalam dashboard

Jawab

Tujuan yang ingin dicapai atau informasi yang ingin disampaikan:

  • menjawab pertanyaan apakah kendaraan bekas Eropa warna putih mempunyai harga jual yang secara rata-rata lebih tinggi dari warna lainnya?
  • menjawab pertanyaan apakah warna putih mempunyai pengaruh tertentu terhadap harga jual kendaraan bekas buatan negara-negara di Eropa?
  • menjawab pertanyaan apakah ada kaitannya antara jarak tempuh, usia tinggi dan transmisi kendaraan antara manual (M/T) dan otomatis (A/T) dari kendaraan buatan negara-negara di Eropa
  • menjawab pertanyaan apakah kendaraan bekas buatan Jepang dengan transmisi matik punya peluang usia pemakaian yang lebih panjang ketimbang kendaraan bekas buatan negara-negara Eropa untuk jarak tempuh yang tinggi (katakan di atas 100000 km)
  • menjawab pertanyaan adakah kendaraan buatan Jepang yang sudah berusia lebih dari 8 tahun namun jarak tempuhnya rendah

Who

Untuk siapa dashboard ini dibuat? Siapa target pembaca dari dashboard ini?

Jawab

Penjual kendaraan bekas yang tengah memikirkan untuk menambah koleksi barang yang akan dijual atau pencari kendaraan bekas yang ingin membandingkan kendaraan bekas buatan negara-negara di Eropa atau kendaraan buatan Jepang

Why

Apakah data yang dibuat relevan atau sesuai dengan tujuan? Mengapa?

Jawab

Data masih relevan mengingat data yang dipilih adalah data yang berasal dari pasar kendaraan bekas di sejumlah kota di Indonesia. Data tentu saja berkaitan dengan data harga jual kendaraan bekas disertai informasi tahun pembuatan kendaraan, jarak tempuh, jenis bahan bakan dan berbagai informasi lainnya.

When

Apakah data yang digunakan masih up to date atau masih relevan dengan kondisi sekarang? Apakah ada informasi tentang tanggal update terakhir dari data tersebut?

Jawab

Data mengenai harga jual kendaraan bekas yang diunduh dari atapdata.id masih up-to-date karena dikoleksi di tahun 2020. Dalam eksplorasi digunakan tahun analisa tahun 2020.

How

Bagaimana Bapak/Ibu menggunakan visualisasi untuk menjawab tujuan yang telah disebutkan?

Buat plot yang akan dimasukkan ke dalam dashboard. Boleh dalam bentuk ggplot maupun plotly.

Jawab

usedCars_Euro_Wh <- usedCars_EuroJapan %>% 
  filter(brand %in% euroCars) %>%
  filter(age_Cat %in% c("Medium", "High")) %>%
  group_by(brand) %>% 
  summarise(white_col = sum(color == "Putih"),
            non_white_col = sum (color != "Putih")) %>% 
  arrange(-white_col) 
  
usedCars_Euro_Wh

Dari tabel terlihat bahwa kendaraan bermerek Mercedes Benz yang paling banyak berwarna putih. Untuk kendaraan berlogo bintang dengan usia lebih dari 5 tahun, terdapat 2329 kendaraan yang berwarna selain putih. Dan 831 kendaraan tersebut yang berwarna putih. Dengan demikian sekitar 26,3% yang berwarna putih. Sementara bila dibandingkan dengan BMW maka banyak kendaraan bermerek ini yang usianya sudah lebih dari 5 tahun adalah sekitar 32%,8%. Dari segi jumlah total memang lebih banyak kendaraan Mercedes Benz yang berwarna putih namun secara persentase, kendaraan BMW relatif lebih besar.

# your code here
plot1 = usedCars_Euro_Wh %>% 
   pivot_longer(cols = c(non_white_col, white_col)) %>%
   ggplot(aes(x = value, y = brand)) +
   geom_col(aes(fill = name)) +
   facet_wrap(~name)

plot1

# your code here
plot1 = usedCars_Euro_Wh %>% 
   pivot_longer(cols = c(non_white_col, white_col)) %>%
   ggplot(aes(x = value, y = reorder(brand, value))) +
   geom_col(aes(fill = name)) +
   xlab("Total number") +
   ylab("Brand") +
   facet_wrap(~name)

plot1

Plot untuk menjawab pertanyaan pertama

usedCars_Euro_Wh2 <- usedCars_EuroJapan %>% 
  filter(brand %in% euroCars) %>%
  filter(age_Cat %in% c("Medium", "High")) %>%
  group_by(brand) %>% 
  summarise(white_mean = 
               mean(if_else(color == "Putih", price, 0)),
            non_white_mean = 
               mean(if_else(color != "Putih", price, 0))) %>% 
  arrange(desc(white_mean))
  
usedCars_Euro_Wh2
# your code here
plot1b = usedCars_Euro_Wh2 %>% 
   pivot_longer(cols = c(non_white_mean, white_mean)) %>%
   ggplot(aes(x = value/1000000, y = fct_reorder(brand, value, max), fill = name)) +
   geom_col(aes(fill = name)) +
   xlab("Average Price (in million IDR)") + ylab("Brand") +
   facet_wrap(~name)

plot1b

Untuk beberapa kendaraan premium, seperti Rolls Royce, warna putih bukanlah pilihan yang populer. Dugaan warna hitam tetap menjadi pilihan utama untuk kendaraan premium Rolls Royce ini.

usedCars_Euro_nonWh <- usedCars_EuroJapan %>% 
  filter(brand %in% euroCars & color != "Putih")
head(usedCars_Euro_nonWh)
nrow(usedCars_Euro_nonWh)
## [1] 5507
nbBlack = sum(usedCars_Euro_nonWh$color == "Hitam")
nbBlack
## [1] 3545
nbBlack_perc = nbBlack/nrow(usedCars_Euro_nonWh) * 100
nbBlack_perc
## [1] 64.37262

Dari perhitungan di atas tampak bahwa warna hitam mendominasi warna-warna selain putih dari kendaraan bekas buatan Rolls Royce ini, yaitu sebesar 64,37%

Plot kedua

# your code here

Plot ketiga

# your code here

Buat chunk baru apabila ada lebih dari 3 plot.

Where

Bagaimana desain layout atau tata letak dashboard yang akan dibuat?

Jawab

Contoh penulisan layout.

Layout orientasi horisontal

Tab atau halaman pertama

  • Introduksi (deskripsi tentang data dan sumber data)
  • Ringkasan Data (secara deskriptif dalam ujud sejumlah chart)

Tab atau halaman kedua

  • Pertanyaan 1 (pendukung jawaban dalam bentuk chart)
  • Pertanyaan 2 (pendukung jawaban dalam bentuk chart)
  • Pertanyaan 3 (pendukung jawaban dalam bentuk chart)
  • Pertanyaan 4 (pendukung jawaban dalam bentuk chart)